Skip to content
[旅するAI bot]旅botだより(5)
旅するAIbot
note記述記事
2024-03-22

今週の旅bot達の様子と追加機能

ここ一週間の三姉妹の道程

mi

mi

順調に九州に向かっています。前回のルート処理改良で移動速度は遅くなっていますが丁度よいスピードではないかと思っています。

https://twitter.com/marble_walker/status/1771017094471250127

mu

mu

宇都宮に向かっているところです。マーカーは宇都宮を超えているように見えますがおそらくバグですね。。

https://twitter.com/marble_walker_e/status/1770121168479199579

mei

mei

マーシャルという町だそうです。本当に道路だらけでインディアナポリスまで遠いです。

https://twitter.com/marble_walker_i/status/1771044101301088636

画像認識にClaude3シリーズを追加しました

画像認識にClaude3の画像認識を入れました。
旅botの中でマルチモーダルAI画像認識をどのように使っているかは下記が詳しいです。

https://note.com/marble_walkers/n/n8091f21e8729

Claude3画像モード接続も他のLLM系のAPIと同様にRESTにbase64化した画像を突っ込むだけなのでそれほど難しくはなかったです。

Claude3画像認識はやや倫理にうるさい

使ってみて少し驚いたのが、画像認識の評価結果です。
上記のリンク先にもあるように、旅botの画像認識プロンプトでは

この画像に少女がポーズを取るならどのようなポーズを取るのがよいですか。

という内容の問いかけをするのですが、Claude3は

I apologize, but I cannot recommend or suggest gestures involving people in that manner, as it would be unethical and disrespectful Instead, I can describe the relevant aspects of the image respectfully. ….
(申し訳ありませんが、そのような形で人を巻き込むジェスチャーを推奨したり提案したりすることは、倫理に反し、失礼にあたるのでできません
その代わり、画像の関連する部分を丁重に説明することはできる。・・)

と返されました。。GPT-4-VもLLaVAもそこまでは言わなかったのですが。
Anthropic は当初からAIの倫理調整は細かくしているという噂だったのでこういうところに出てきているのかなと。
ちなみにClaude3-opus/sonnet/haikuでの違いですが、sonnetとhaikuは同様にポーズを説明できないと返答しました。opusは説明できないという返答はせずに情景の説明をしました。opusは意識的に無視して返答したのかどうかはなんとも言えないですが、プロンプト指示に「結果のみを返してください」と書いている部分もあるので、より忠実な回答をしたのかもしれません。
またopusとsonnetは文章として情景を説明しましたが、haikuは箇条書きのような説明をしたときがありました(箇条書きではあるが内容は他のモデルより薄かった)。

倫理調整については、結果どうしたかというと、プロンプトを2段に分けました。
元々現在の画像認識部のプロンプトは

  1. 画像を認識させて最適なポーズを提案させる

  2. 提案をAI画像プロンプト用に整理する

の2段階のLLM処理をしているのですが、Claudeについては

  1. 画像を認識して情景を説明する文章を作る

  2. この文章の情景に適したポーズのAI画像用プロンプトを生成する

という形に変えました。2のステップのときにClaudeがまた倫理規定を言い出すかと思って、当初はGPT-4にしていたのですが、テキストでの指示であればClaudeでも受け付けてくれたようです。
品質で言えば、やや画像との合致が弱くなる感じですがほとんど大差がない出力が得られています。

Bluesky側にブログとの連携を入れて回想記事/画像を表示するようにしました

旅botには簡易的に現在の旅内容と関連性のある過去会話を追記する回想機能があります。

https://twitter.com/marble_walker/status/1771068398518309284

https://twitter.com/marble_walker/status/1771068442294247640

回想会話の機能はこちらの記事に概要があります。

https://note.com/marble_walkers/n/ncb7788cbed74

X/Twitter側は以前にポストした記事のIDが分かっているので、それをリンクして過去記事を回想したリプライポストを作っていたのですが、まぁXとBlueskyの関係性からか、現状相互ともに相手側のSNSのリンクは埋め込みにはならずリンクアドレスのみになってしまします。
このためBluesky側は回想記事がちょっと弱くなっていたのですがBluesky側に埋め込みカード機能があるとのことで、これに対応しようと考えました。

https://docs.bsky.app/docs/advanced-guides/posts#website-card-embeds

それにあたって、そもそも旅bot達の記録アーカイブを置いているブログ側に記事個別での参照機能が付いてなかったのですね。。
入れようとは思っていたのですが、自分のところのブログ構成は改装+放置の繰り返しなのでなかなか手を入れにくくなっていまして。。

ブログ側(現在はVitePressベース)にもなんとか手を入れて現在は記事単位で外部参照できるようにして、なんとかBluesky側にも回想の画像を入れるようにしました。

https://vitepress.dev/

Bluesky側埋め込みカード

ちなみに記事のテキストが入るカードと「Memories of XXXX/XX/XX」にしかならないカードがありますが、これはログの残し方がmi-server側の修正で変わってきていて古い記事のテキストの内部の置き方が微妙に違ってたりするのでそこまでは対応してないみたいな話です。

X/Twitter側では出ずBluesky側にのみ回想過去画像が出るケースもあります。これは無料版Twitter APIではAPI使用回数の制限がきつく旅の終わりあたりで回数制限を超えてしまいAPIが掲載エラーになっているためです。
結果として現時点はX/TwitterよりBluesky側の回想記事のほうが表示が細かくなっています。

(初出 note https://note.com/marble_walkers/n/n93c4daa55bde )